package vn.vfriends.vbox.bean;

import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.shiro.SecurityUtils;
import org.primefaces.model.chart.PieChartModel;
import org.primefaces.model.menu.DefaultMenuItem;
import org.primefaces.model.menu.DefaultMenuModel;
import org.primefaces.model.menu.DefaultSubMenu;
import org.primefaces.model.menu.MenuModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import vn.vfriends.vbox.model.Storage;
import vn.vfriends.vbox.model.Provider;
import vn.vfriends.vbox.model.Account;
import vn.vfriends.vbox.model.User;
import vn.vfriends.vbox.provider.GoogleProvider;
import vn.vfriends.vbox.service.StorageService;
import vn.vfriends.vbox.service.AccountService;

/**
 *
 * @author tuancn
 */
@Named
@ViewScoped
public class DashboardBean implements Serializable {
    
//    private static final Logger logger = LoggerFactory.getLogger(DashboardBean.class);
//    
//    @Inject
//    private AccountService accountService;
//    
//    @Inject
//    private StorageService storageService;
//    
//    private List<Account> accountList;
//    
//    private Integer removeAccountId;
//    
//    private MenuModel menuModel;
//
//    @PostConstruct
//    public void init() {
//        this.removeAccountId = 0;
//        User user = (User)SecurityUtils.getSubject().getSession().getAttribute("LOGGED_USER");
//        accountList = accountService.findByUserId(user.getId());
//        
//        for(Account account : accountList) {
//            try {
//                About about = storageService.getAbout(account.getId());
//                account.setAbout(about);
//            } catch (Exception e) {
//                logger.debug(e.getMessage(), e);
//            }
//        }
//        
//        //  init menu
//        this.initMenu();
//    }
//    
//    private void initMenu() {
//        menuModel = new DefaultMenuModel();
//        
//        //Administration submenu  
//        DefaultSubMenu adminSubmenu = new DefaultSubMenu("Administration");  
//          
//        DefaultMenuItem item = new DefaultMenuItem("User Manager");  
//        item.setUrl("/admin/user/list.jsf");  
//        item.setIcon("ui-icon-person");  
//        adminSubmenu.addElement(item);
//        
//        item = new DefaultMenuItem("Role Manager");  
//        item.setUrl("/admin/role/list.jsf");  
//        item.setIcon("ui-icon-person");  
//        adminSubmenu.addElement(item);
//        
//        adminSubmenu.setRendered(SecurityUtils.getSubject().hasRole("ADMIN"));
//        
//        menuModel.addElement(adminSubmenu);
//        
//        //Second submenu  
//        DefaultSubMenu accountSubmenu = new DefaultSubMenu("Storages");
//        for(Account account : accountList) {
//            String label = "";
//            if(account.getAbout() != null) {
//                label = account.getProvider().getName() + "-" + account.getAbout().getName();
//            } else {
//                label = account.getProvider().getName();
//            }
//            
//            item = new DefaultMenuItem(label);
//            item.setUrl("/storage/panel.jsf?id=" + account.getId());
//            item.setIcon("ui-icon-star");
//            accountSubmenu.addElement(item);
//        }
//        menuModel.addElement(accountSubmenu);
//    }
//    
//    public List<Account> getAccountList() {
//        return accountList;
//    }
//    
//    public PieChartModel getPieModel(About about) {
//        if (about != null) {
//            PieChartModel pieModel = new PieChartModel();
//            pieModel.set("Unused", about.getQuotaBytesTotal() - about.getQuotaBytesUsed());
//            pieModel.set("Used", about.getQuotaBytesUsed());
//
//            return pieModel;
//        } else {
//            return null;
//        }
//    }
//
//    public MenuModel getMenuModel() {
//        return menuModel;
//    }
//
//    public void setMenuModel(MenuModel menuModel) {
//        this.menuModel = menuModel;
//    }
//    
//    public void removeAccountAction() throws Exception {
//        if (removeAccountId > 0) {
//            this.accountService.remove(Integer.valueOf(this.removeAccountId));
//            this.init();
//        }
//    }
//    
//    public void removeConfirmAction(String id) {
//        this.removeAccountId = Integer.valueOf(id);
//    }
//    
//    public void reregisterAction(String strProvider) {
//        Provider provider = Provider.valueOf(strProvider);
//        if(provider == Provider.GOOGLE_DRIVE) {
//            GoogleProvider googleProvider = new GoogleProvider();
//            String url = googleProvider.getAuthorizationUrl();
//            try {
//                FacesContext.getCurrentInstance().getExternalContext().redirect(url);
//            } catch (IOException ex) {
//                logger.error(ex.getMessage(), ex);
//            }
//        }
//    }
}
